perm filename HIER1[W84,JMC] blob
sn#744240 filedate 1984-02-24 generic text, type T, neo UTF8
ordinarily(thing,not-fly).
ordinarily(penguin,not-fly).
ordinarily(bird,fly).
mem(joe,adelie).
mem(tweety,canary).
ground←is←a(animal,thing).
ground←is←a(rock,thing).
ground←is←a(bird,animal).
ground←is←a(penguin,bird).
ground←is←a(canary,bird).
ground←is←a(adelie,penguin).
ordinarily(C,not-(not-P)) :-
ordinarily(C,P).
ab←aspect1(C,Class,P) :-
(
is←a(Class,C1) ;
Class = C1
),
ordinarily(C1,not-P),
is←a(C1,C).
ordinarily(Class,P) :-
is←a(Class,C),
ordinarily(C,P),
\+ ab←aspect1(C,Class,P).
ap(P,X) :-
mem(X,C),
ordinarily(C,P),
\+ ab←aspect3(X,C,P).
mem(X,C1) :-
is←a(C1,C),
mem(X,C).
ab←aspect3(X,C,P) :-
mem(X,C1),
is←a(C,C1),
ordinarily(C1,not-P).
% bottom level
is←a(X, Y) :- ground←is←a(X, Y).
% forward
is←a(X, Y) :-
\+ var(X),
ground←is←a(X, Z),
is←a(Z, Y).
% backward
is←a(X, Y) :-
\+ var(Y),
ground←is←a(Z, Y),
is←a(X, Z).
% both
is←a(X, Y) :-
var(X),
var(Y),
ground←is←a(X, Z),
is←a(Z, Y).
% neither
is←a(X, Y) :-
\+ var(X),
\+ var(Y),
\+ ground←is←a(X, Y),
ground←is←a(X, Z),
is←a(Z, Y).